#include<bits/stdc++.h>
using namespace std;
int cnt=0;
// struct Tree{
//     int 
// }
vector<int> Dep[101000+5];
vector<int> P[101000+5];
int In[1000000+5],Out[1000000+5];
vector<int>::iterator First,End;
inline int read(){
    int x;
    scanf("%d",&x);
    return x;
}
int main(){
    int T=read(),M=read();
    for(int i=1;i<T;i++){
        int x=read(),y=read();
        P[x].push_back(y);
    }
    for(int i=1;i<=M;i++){
        int x=read(),y=read();
        First=lower_bound(P[x].begin(),P[y].end(),In[x]);
        End=upper_bound(Dep[x].begin(),Dep[x].end(),In[y]);
        int ans=First-End;
        printf("%d\n",ans);
    }
    
    return 0;
}